//
//  QGStatus.swift
//  斯威夫特微博
//
//  Created by youyoumacmini3 on 2017/7/10.
//  Copyright © 2017年 youyoumacmini3. All rights reserved.
//

import UIKit
import YYModel

/// 微博数据模型
class QGStatus: NSObject {

    // Int 类型，在64位的机器是64位的，在32位的机器就是32位的
    // 如果不写Int64 在iPad2/iphone5/5c/4 上都无法正常运行
    var id:Int64 = 0
    
    // 微博信息内容
    var text:String?
    
    // 微博创建时间字符串
    var created_at: String? {
        didSet{
            creatDate = Date.cz_sinaDate(string: created_at ?? "")
        }
    }
    
    /// 微博创建日期
    var creatDate: Date?
    
    
    // 微博来源 - 发布使用的客户端
    var source: String? {
        didSet {
            // 重新计算来源并且保存
            // 在 didSet 中，给 source 再次设置值，不会调用 didSet
            source = "来自于" + (source?.cz_href()?.text ?? "")
        }
    }
    
    
    
    // 微博用户
    var user: QGUser?
    
    // 被转发的原创微博
    var retweeted_status: QGStatus?
    
    
    var reposts_count: Int = 0 // 转发数
    var comments_count: Int = 0 // 评论数
    var attitudes_count: Int = 0 // 点赞数
    
    // 微博配图模型法数组
    var pic_urls: [QGPicture]?
    /*  原理：
        - YY_Model字典转模型时，如果发现一个数组属性
        - 就会尝试调用下面类方法，如果实现，YY_Model 就尝试使用这个类来实例化数组中对象
     */

 
    // 类函数 -> 告诉第三方框架 YY_Model如果遇到数组类型的属性，数组中存放的对象是什么类？
    // NSArray 中保存对象的类型通常是 'id' 类型
    // OC中的泛型实在swift推出后苹果为了兼容给 OC 增加的
    // 从运行时的角度，仍然不知道数组中 应该存放什么类型
    class func modelContainerPropertyGenericClass() -> [String: AnyClass] {
        return ["pic_urls": QGPicture.self]
    }
    
    
    // 重写 description 的计算型属性
    override var description: String {
        return yy_modelDescription()
    }
}
